From: Ian Campbell Date: Thu, 8 Jan 2015 11:53:55 +0000 (+0000) Subject: dt-uart: use ':' as separator between path and options X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~3939 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=f01af57300cb60ab0fd8487fb5bbbe97bee234f0;p=xen.git dt-uart: use ':' as separator between path and options ',' is a valid character in a device-tree path (see ePAPR v1.1 Table 2-1), in fact ',' is actually pretty common in node names. Using ',' as a separator breaks for example on fast models. If you use the full path (/smb/motherboard/iofpga@3,00000000/uart@090000) rather than the alias then earlyprintk gives: (XEN) Looking for UART console /smb/motherboard/iofpga@3 (XEN) Unable to find device "/smb/motherboard/iofpga@3" (XEN) Bad console= option 'dtuart' I actually noticed this on Jetson where the uart is "/serial@0,70006300" and there happened to be no alias defined. Instead use ':' as the separator, it is defined to terminate the path in the context of /chosen/stdout-path (Table 3-4) which is pretty closely analogous to the dtuart= option and so makes a pretty good choice (especially since the next patch adds support for stdout-path). Since no DT aware driver current supports any options there is no point in retaining support for ',' for backwards compatibility. Additionally, expand the buffer for the dtuart option, a path can be far longer than 30 characters (in fact the maximum size of a single node name is 31, so it's not even necessarily enough for an alias). 128 is completely arbitrary and allows for paths at least 8 deep even with worst case node names. Signed-off-by: Ian Campbell Reviewed-by: Julien Grall --- diff --git a/docs/misc/xen-command-line.markdown b/docs/misc/xen-command-line.markdown index 8bd75cd3d2..a061aa41b6 100644 --- a/docs/misc/xen-command-line.markdown +++ b/docs/misc/xen-command-line.markdown @@ -558,7 +558,7 @@ Pin dom0 vcpus to their respective pcpus Flag that makes a 64bit dom0 boot in PVH mode. No 32bit support at present. ### dtuart (ARM) -> `= path [,options]` +> `= path [:options]` > Default: `""` diff --git a/xen/drivers/char/dt-uart.c b/xen/drivers/char/dt-uart.c index 04dbb9706a..695fdaab36 100644 --- a/xen/drivers/char/dt-uart.c +++ b/xen/drivers/char/dt-uart.c @@ -25,13 +25,13 @@ /* * Configure UART port with a string: - * path,options + * path:options * * @path: full path used in the device tree for the UART. If the path * doesn't start with '/', we assuming that it's an alias. * @options: UART speficic options (see in each UART driver) */ -static char __initdata opt_dtuart[30] = ""; +static char __initdata opt_dtuart[256] = ""; string_param("dtuart", opt_dtuart); void __init dt_uart_init(void) @@ -50,7 +50,7 @@ void __init dt_uart_init(void) return; } - options = strchr(opt_dtuart, ','); + options = strchr(opt_dtuart, ':'); if ( options != NULL ) *(options++) = '\0'; else